[GH-ISSUE #491] Fail to build CXL Transport when USE_CXL set to ON #170

Closed
opened 2026-10-29 21:10:28 +00:00 by bsakaguchi · 2 comments
Owner

Originally created by @staryxchen on GitHub (Jun 14, 2025).
Original GitHub issue: https://github.com/kvcache-ai/Mooncake/issues/491

I'm trying to build mooncake with CXL and the version of source code I used is v0.3.2post1. When I set USE_CXL to ON and run make, I encounter an error

/app/mooncake-transfer-engine/include/transfer_metadata.h:19:10: fatal error: json/json.h: No such file or directory
   19 | #include <json/json.h>
      |          ^~~~~~~~~~~~~

It seems to some libraries not be linked, so I modify CMakeList.txt to fix this error. But more error are thrown out.

In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15:
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:49:9: error: conflicting return type specified for 'virtual int mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)'
   49 |     int submitTransfer(BatchID batch_id,
      |         ^~~~~~~~~~~~~~
In file included from /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:31,
                 from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15:
/app/mooncake-transfer-engine/include/transport/transport.h:217:20: note: overridden function is 'virtual mooncake::Status mooncake::Transport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)'
  217 |     virtual Status submitTransfer(
      |                    ^~~~~~~~~~~~~~
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp: In member function 'virtual mooncake::Status mooncake::CxlTransport::getTransferStatus(mooncake::Transport::BatchID, size_t, mooncake::Transport::TransferStatus&)':
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:46:12: error: could not convert '0' from 'int' to 'mooncake::Status'
   46 |     return 0;
      |            ^
      |            |
      |            int
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp: At global scope:
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:49:8: error: no declaration matches 'mooncake::Status mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)'
   49 | Status CxlTransport::submitTransfer(BatchID batch_id,
      |        ^~~~~~~~~~~~
In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15:
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:49:9: note: candidate is: 'virtual int mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)'
   49 |     int submitTransfer(BatchID batch_id,
      |         ^~~~~~~~~~~~~~
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here
   36 | class CxlTransport : public Transport {
      |       ^~~~~~~~~~~~
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:54:5: error: no declaration matches 'int mooncake::CxlTransport::freeBatchID(mooncake::Transport::BatchID)'
   54 | int CxlTransport::freeBatchID(BatchID batch_id) { return 0; }
      |     ^~~~~~~~~~~~
In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15:
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:55:12: note: candidate is: 'virtual mooncake::Status mooncake::CxlTransport::freeBatchID(mooncake::Transport::BatchID)'
   55 |     Status freeBatchID(BatchID batch_id) override;
      |            ^~~~~~~~~~~
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here
   36 | class CxlTransport : public Transport {
      |       ^~~~~~~~~~~~
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:63:45: error: 'string' does not name a type; did you mean 'stdin'?
   63 |                                       const string &location,
      |                                             ^~~~~~
      |                                             stdin
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:62:5: error: no declaration matches 'int mooncake::CxlTransport::registerLocalMemory(void*, size_t, const int&, bool, bool)'
   62 | int CxlTransport::registerLocalMemory(void *addr, size_t length,
      |     ^~~~~~~~~~~~
In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15:
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:62:9: note: candidate is: 'virtual int mooncake::CxlTransport::registerLocalMemory(void*, size_t, const string&, bool, bool)'
   62 |     int registerLocalMemory(void *addr, size_t length,
      |         ^~~~~~~~~~~~~~~~~~~
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here
   36 | class CxlTransport : public Transport {
      |       ^~~~~~~~~~~~
make[2]: *** [mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/build.make:76: mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/cxl_transport.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:558: mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/all] Error 2
make: *** [Makefile:146: all] Error 2

Is anything I missed? Or this is due to the current version's incomplete support for CXL?

Originally created by @staryxchen on GitHub (Jun 14, 2025). Original GitHub issue: https://github.com/kvcache-ai/Mooncake/issues/491 I'm trying to build mooncake with CXL and the version of source code I used is **v0.3.2post1**. When I set USE_CXL to ON and run make, I encounter an error ``` /app/mooncake-transfer-engine/include/transfer_metadata.h:19:10: fatal error: json/json.h: No such file or directory 19 | #include <json/json.h> | ^~~~~~~~~~~~~ ``` It seems to some libraries not be linked, so I modify CMakeList.txt to fix this error. But more error are thrown out. ``` In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15: /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:49:9: error: conflicting return type specified for 'virtual int mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)' 49 | int submitTransfer(BatchID batch_id, | ^~~~~~~~~~~~~~ In file included from /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:31, from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15: /app/mooncake-transfer-engine/include/transport/transport.h:217:20: note: overridden function is 'virtual mooncake::Status mooncake::Transport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)' 217 | virtual Status submitTransfer( | ^~~~~~~~~~~~~~ /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp: In member function 'virtual mooncake::Status mooncake::CxlTransport::getTransferStatus(mooncake::Transport::BatchID, size_t, mooncake::Transport::TransferStatus&)': /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:46:12: error: could not convert '0' from 'int' to 'mooncake::Status' 46 | return 0; | ^ | | | int /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp: At global scope: /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:49:8: error: no declaration matches 'mooncake::Status mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)' 49 | Status CxlTransport::submitTransfer(BatchID batch_id, | ^~~~~~~~~~~~ In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15: /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:49:9: note: candidate is: 'virtual int mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)' 49 | int submitTransfer(BatchID batch_id, | ^~~~~~~~~~~~~~ /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here 36 | class CxlTransport : public Transport { | ^~~~~~~~~~~~ /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:54:5: error: no declaration matches 'int mooncake::CxlTransport::freeBatchID(mooncake::Transport::BatchID)' 54 | int CxlTransport::freeBatchID(BatchID batch_id) { return 0; } | ^~~~~~~~~~~~ In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15: /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:55:12: note: candidate is: 'virtual mooncake::Status mooncake::CxlTransport::freeBatchID(mooncake::Transport::BatchID)' 55 | Status freeBatchID(BatchID batch_id) override; | ^~~~~~~~~~~ /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here 36 | class CxlTransport : public Transport { | ^~~~~~~~~~~~ /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:63:45: error: 'string' does not name a type; did you mean 'stdin'? 63 | const string &location, | ^~~~~~ | stdin /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:62:5: error: no declaration matches 'int mooncake::CxlTransport::registerLocalMemory(void*, size_t, const int&, bool, bool)' 62 | int CxlTransport::registerLocalMemory(void *addr, size_t length, | ^~~~~~~~~~~~ In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15: /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:62:9: note: candidate is: 'virtual int mooncake::CxlTransport::registerLocalMemory(void*, size_t, const string&, bool, bool)' 62 | int registerLocalMemory(void *addr, size_t length, | ^~~~~~~~~~~~~~~~~~~ /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here 36 | class CxlTransport : public Transport { | ^~~~~~~~~~~~ make[2]: *** [mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/build.make:76: mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/cxl_transport.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:558: mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/all] Error 2 make: *** [Makefile:146: all] Error 2 ``` Is anything I missed? Or this is due to the current version's incomplete support for CXL?
Author
Owner

@stmatengss commented on GitHub (Jun 14, 2025):

I'm trying to build mooncake with CXL and the version of source code I used is v0.3.2post1. When I set USE_CXL to ON and run make, I encounter an error

/app/mooncake-transfer-engine/include/transfer_metadata.h:19:10: fatal error: json/json.h: No such file or directory
   19 | #include <json/json.h>
      |          ^~~~~~~~~~~~~

It seems to some libraries not be linked, so I modify CMakeList.txt to fix this error. But more error are thrown out.

In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15:
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:49:9: error: conflicting return type specified for 'virtual int mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)'
   49 |     int submitTransfer(BatchID batch_id,
      |         ^~~~~~~~~~~~~~
In file included from /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:31,
                 from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15:
/app/mooncake-transfer-engine/include/transport/transport.h:217:20: note: overridden function is 'virtual mooncake::Status mooncake::Transport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)'
  217 |     virtual Status submitTransfer(
      |                    ^~~~~~~~~~~~~~
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp: In member function 'virtual mooncake::Status mooncake::CxlTransport::getTransferStatus(mooncake::Transport::BatchID, size_t, mooncake::Transport::TransferStatus&)':
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:46:12: error: could not convert '0' from 'int' to 'mooncake::Status'
   46 |     return 0;
      |            ^
      |            |
      |            int
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp: At global scope:
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:49:8: error: no declaration matches 'mooncake::Status mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)'
   49 | Status CxlTransport::submitTransfer(BatchID batch_id,
      |        ^~~~~~~~~~~~
In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15:
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:49:9: note: candidate is: 'virtual int mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)'
   49 |     int submitTransfer(BatchID batch_id,
      |         ^~~~~~~~~~~~~~
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here
   36 | class CxlTransport : public Transport {
      |       ^~~~~~~~~~~~
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:54:5: error: no declaration matches 'int mooncake::CxlTransport::freeBatchID(mooncake::Transport::BatchID)'
   54 | int CxlTransport::freeBatchID(BatchID batch_id) { return 0; }
      |     ^~~~~~~~~~~~
In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15:
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:55:12: note: candidate is: 'virtual mooncake::Status mooncake::CxlTransport::freeBatchID(mooncake::Transport::BatchID)'
   55 |     Status freeBatchID(BatchID batch_id) override;
      |            ^~~~~~~~~~~
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here
   36 | class CxlTransport : public Transport {
      |       ^~~~~~~~~~~~
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:63:45: error: 'string' does not name a type; did you mean 'stdin'?
   63 |                                       const string &location,
      |                                             ^~~~~~
      |                                             stdin
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:62:5: error: no declaration matches 'int mooncake::CxlTransport::registerLocalMemory(void*, size_t, const int&, bool, bool)'
   62 | int CxlTransport::registerLocalMemory(void *addr, size_t length,
      |     ^~~~~~~~~~~~
In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15:
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:62:9: note: candidate is: 'virtual int mooncake::CxlTransport::registerLocalMemory(void*, size_t, const string&, bool, bool)'
   62 |     int registerLocalMemory(void *addr, size_t length,
      |         ^~~~~~~~~~~~~~~~~~~
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here
   36 | class CxlTransport : public Transport {
      |       ^~~~~~~~~~~~
make[2]: *** [mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/build.make:76: mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/cxl_transport.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:558: mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/all] Error 2
make: *** [Makefile:146: all] Error 2

Is anything I missed? Or this is due to the current version's incomplete support for CXL?

CXL transparent is currently unsupported due to extensive API changes during version development. It will be available in the next version.

<!-- gh-comment-id:2972742720 --> @stmatengss commented on GitHub (Jun 14, 2025): > I'm trying to build mooncake with CXL and the version of source code I used is **v0.3.2post1**. When I set USE_CXL to ON and run make, I encounter an error > > ``` > /app/mooncake-transfer-engine/include/transfer_metadata.h:19:10: fatal error: json/json.h: No such file or directory > 19 | #include <json/json.h> > | ^~~~~~~~~~~~~ > ``` > > It seems to some libraries not be linked, so I modify CMakeList.txt to fix this error. But more error are thrown out. > > ``` > In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15: > /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:49:9: error: conflicting return type specified for 'virtual int mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)' > 49 | int submitTransfer(BatchID batch_id, > | ^~~~~~~~~~~~~~ > In file included from /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:31, > from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15: > /app/mooncake-transfer-engine/include/transport/transport.h:217:20: note: overridden function is 'virtual mooncake::Status mooncake::Transport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)' > 217 | virtual Status submitTransfer( > | ^~~~~~~~~~~~~~ > /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp: In member function 'virtual mooncake::Status mooncake::CxlTransport::getTransferStatus(mooncake::Transport::BatchID, size_t, mooncake::Transport::TransferStatus&)': > /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:46:12: error: could not convert '0' from 'int' to 'mooncake::Status' > 46 | return 0; > | ^ > | | > | int > /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp: At global scope: > /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:49:8: error: no declaration matches 'mooncake::Status mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)' > 49 | Status CxlTransport::submitTransfer(BatchID batch_id, > | ^~~~~~~~~~~~ > In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15: > /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:49:9: note: candidate is: 'virtual int mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)' > 49 | int submitTransfer(BatchID batch_id, > | ^~~~~~~~~~~~~~ > /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here > 36 | class CxlTransport : public Transport { > | ^~~~~~~~~~~~ > /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:54:5: error: no declaration matches 'int mooncake::CxlTransport::freeBatchID(mooncake::Transport::BatchID)' > 54 | int CxlTransport::freeBatchID(BatchID batch_id) { return 0; } > | ^~~~~~~~~~~~ > In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15: > /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:55:12: note: candidate is: 'virtual mooncake::Status mooncake::CxlTransport::freeBatchID(mooncake::Transport::BatchID)' > 55 | Status freeBatchID(BatchID batch_id) override; > | ^~~~~~~~~~~ > /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here > 36 | class CxlTransport : public Transport { > | ^~~~~~~~~~~~ > /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:63:45: error: 'string' does not name a type; did you mean 'stdin'? > 63 | const string &location, > | ^~~~~~ > | stdin > /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:62:5: error: no declaration matches 'int mooncake::CxlTransport::registerLocalMemory(void*, size_t, const int&, bool, bool)' > 62 | int CxlTransport::registerLocalMemory(void *addr, size_t length, > | ^~~~~~~~~~~~ > In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15: > /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:62:9: note: candidate is: 'virtual int mooncake::CxlTransport::registerLocalMemory(void*, size_t, const string&, bool, bool)' > 62 | int registerLocalMemory(void *addr, size_t length, > | ^~~~~~~~~~~~~~~~~~~ > /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here > 36 | class CxlTransport : public Transport { > | ^~~~~~~~~~~~ > make[2]: *** [mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/build.make:76: mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/cxl_transport.cpp.o] Error 1 > make[1]: *** [CMakeFiles/Makefile2:558: mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/all] Error 2 > make: *** [Makefile:146: all] Error 2 > ``` > > Is anything I missed? Or this is due to the current version's incomplete support for CXL? CXL transparent is currently unsupported due to extensive API changes during version development. It will be available in the next version.
Author
Owner

@staryxchen commented on GitHub (Jun 15, 2025):

I'm trying to build mooncake with CXL and the version of source code I used is v0.3.2post1. When I set USE_CXL to ON and run make, I encounter an error

/app/mooncake-transfer-engine/include/transfer_metadata.h:19:10: fatal error: json/json.h: No such file or directory
   19 | #include <json/json.h>
      |          ^~~~~~~~~~~~~

It seems to some libraries not be linked, so I modify CMakeList.txt to fix this error. But more error are thrown out.

In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15:
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:49:9: error: conflicting return type specified for 'virtual int mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)'
   49 |     int submitTransfer(BatchID batch_id,
      |         ^~~~~~~~~~~~~~
In file included from /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:31,
                 from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15:
/app/mooncake-transfer-engine/include/transport/transport.h:217:20: note: overridden function is 'virtual mooncake::Status mooncake::Transport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)'
  217 |     virtual Status submitTransfer(
      |                    ^~~~~~~~~~~~~~
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp: In member function 'virtual mooncake::Status mooncake::CxlTransport::getTransferStatus(mooncake::Transport::BatchID, size_t, mooncake::Transport::TransferStatus&)':
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:46:12: error: could not convert '0' from 'int' to 'mooncake::Status'
   46 |     return 0;
      |            ^
      |            |
      |            int
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp: At global scope:
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:49:8: error: no declaration matches 'mooncake::Status mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)'
   49 | Status CxlTransport::submitTransfer(BatchID batch_id,
      |        ^~~~~~~~~~~~
In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15:
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:49:9: note: candidate is: 'virtual int mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)'
   49 |     int submitTransfer(BatchID batch_id,
      |         ^~~~~~~~~~~~~~
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here
   36 | class CxlTransport : public Transport {
      |       ^~~~~~~~~~~~
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:54:5: error: no declaration matches 'int mooncake::CxlTransport::freeBatchID(mooncake::Transport::BatchID)'
   54 | int CxlTransport::freeBatchID(BatchID batch_id) { return 0; }
      |     ^~~~~~~~~~~~
In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15:
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:55:12: note: candidate is: 'virtual mooncake::Status mooncake::CxlTransport::freeBatchID(mooncake::Transport::BatchID)'
   55 |     Status freeBatchID(BatchID batch_id) override;
      |            ^~~~~~~~~~~
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here
   36 | class CxlTransport : public Transport {
      |       ^~~~~~~~~~~~
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:63:45: error: 'string' does not name a type; did you mean 'stdin'?
   63 |                                       const string &location,
      |                                             ^~~~~~
      |                                             stdin
/app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:62:5: error: no declaration matches 'int mooncake::CxlTransport::registerLocalMemory(void*, size_t, const int&, bool, bool)'
   62 | int CxlTransport::registerLocalMemory(void *addr, size_t length,
      |     ^~~~~~~~~~~~
In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15:
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:62:9: note: candidate is: 'virtual int mooncake::CxlTransport::registerLocalMemory(void*, size_t, const string&, bool, bool)'
   62 |     int registerLocalMemory(void *addr, size_t length,
      |         ^~~~~~~~~~~~~~~~~~~
/app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here
   36 | class CxlTransport : public Transport {
      |       ^~~~~~~~~~~~
make[2]: *** [mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/build.make:76: mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/cxl_transport.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:558: mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/all] Error 2
make: *** [Makefile:146: all] Error 2

Is anything I missed? Or this is due to the current version's incomplete support for CXL?

CXL transparent is currently unsupported due to extensive API changes during version development. It will be available in the next version.

Got it. Thank u for your reply!

<!-- gh-comment-id:2973455784 --> @staryxchen commented on GitHub (Jun 15, 2025): > > I'm trying to build mooncake with CXL and the version of source code I used is **v0.3.2post1**. When I set USE_CXL to ON and run make, I encounter an error > > ``` > > /app/mooncake-transfer-engine/include/transfer_metadata.h:19:10: fatal error: json/json.h: No such file or directory > > 19 | #include <json/json.h> > > | ^~~~~~~~~~~~~ > > ``` > > > > > > > > > > > > > > > > > > > > > > > > It seems to some libraries not be linked, so I modify CMakeList.txt to fix this error. But more error are thrown out. > > ``` > > In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15: > > /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:49:9: error: conflicting return type specified for 'virtual int mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)' > > 49 | int submitTransfer(BatchID batch_id, > > | ^~~~~~~~~~~~~~ > > In file included from /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:31, > > from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15: > > /app/mooncake-transfer-engine/include/transport/transport.h:217:20: note: overridden function is 'virtual mooncake::Status mooncake::Transport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)' > > 217 | virtual Status submitTransfer( > > | ^~~~~~~~~~~~~~ > > /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp: In member function 'virtual mooncake::Status mooncake::CxlTransport::getTransferStatus(mooncake::Transport::BatchID, size_t, mooncake::Transport::TransferStatus&)': > > /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:46:12: error: could not convert '0' from 'int' to 'mooncake::Status' > > 46 | return 0; > > | ^ > > | | > > | int > > /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp: At global scope: > > /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:49:8: error: no declaration matches 'mooncake::Status mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)' > > 49 | Status CxlTransport::submitTransfer(BatchID batch_id, > > | ^~~~~~~~~~~~ > > In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15: > > /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:49:9: note: candidate is: 'virtual int mooncake::CxlTransport::submitTransfer(mooncake::Transport::BatchID, const std::vector<mooncake::Transport::TransferRequest>&)' > > 49 | int submitTransfer(BatchID batch_id, > > | ^~~~~~~~~~~~~~ > > /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here > > 36 | class CxlTransport : public Transport { > > | ^~~~~~~~~~~~ > > /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:54:5: error: no declaration matches 'int mooncake::CxlTransport::freeBatchID(mooncake::Transport::BatchID)' > > 54 | int CxlTransport::freeBatchID(BatchID batch_id) { return 0; } > > | ^~~~~~~~~~~~ > > In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15: > > /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:55:12: note: candidate is: 'virtual mooncake::Status mooncake::CxlTransport::freeBatchID(mooncake::Transport::BatchID)' > > 55 | Status freeBatchID(BatchID batch_id) override; > > | ^~~~~~~~~~~ > > /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here > > 36 | class CxlTransport : public Transport { > > | ^~~~~~~~~~~~ > > /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:63:45: error: 'string' does not name a type; did you mean 'stdin'? > > 63 | const string &location, > > | ^~~~~~ > > | stdin > > /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:62:5: error: no declaration matches 'int mooncake::CxlTransport::registerLocalMemory(void*, size_t, const int&, bool, bool)' > > 62 | int CxlTransport::registerLocalMemory(void *addr, size_t length, > > | ^~~~~~~~~~~~ > > In file included from /app/mooncake-transfer-engine/src/transport/cxl_transport/cxl_transport.cpp:15: > > /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:62:9: note: candidate is: 'virtual int mooncake::CxlTransport::registerLocalMemory(void*, size_t, const string&, bool, bool)' > > 62 | int registerLocalMemory(void *addr, size_t length, > > | ^~~~~~~~~~~~~~~~~~~ > > /app/mooncake-transfer-engine/include/transport/cxl_transport/cxl_transport.h:36:7: note: 'class mooncake::CxlTransport' defined here > > 36 | class CxlTransport : public Transport { > > | ^~~~~~~~~~~~ > > make[2]: *** [mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/build.make:76: mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/cxl_transport.cpp.o] Error 1 > > make[1]: *** [CMakeFiles/Makefile2:558: mooncake-transfer-engine/src/transport/cxl_transport/CMakeFiles/cxl_transport.dir/all] Error 2 > > make: *** [Makefile:146: all] Error 2 > > ``` > > > > > > > > > > > > > > > > > > > > > > > > Is anything I missed? Or this is due to the current version's incomplete support for CXL? > > CXL transparent is currently unsupported due to extensive API changes during version development. It will be available in the next version. Got it. Thank u for your reply!
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kvcache-ai/Mooncake#170
No description provided.