Open valenotary opened 3 years ago
Actually, Mac already works. It seems clang is very close to g++, in that respect.
Note that Graphitti is a 32-bit program, as all GPUs (as far as I know) are 32-bit hardware.
We should replace Timer
with more modern timing calls (this is for performance measurement, I assume). There may be another issue about this; if not, I have example code.
Last time I checked on the CUDA docs, the CUDA toolkit is explicitly 64-bit only nowadays, and as such you can't develop a CUDA application that's not on a 64-bit system. Supposedly you can still target to build a 32-bit application though.
This is something to look into. They may just mean 64-bit machine code, not 64-bit datatypes. As far as I know, GPU hardware only supports 32-bit single precision directly, with 64-bit synthesized from multiple operations and so much slower. But it would be interesting to get the deeper details.
Graphitti should be able to run on any 64-bit device - primarily Windows, but I do not see why not on Apple as well. The primary development and testing environments will be Windows and Linux though.
Here are some current points:
__invoke
inGeneric FunctionNode.h
is Linux specific; the standard library call isstd::invoke
and is only available inC++17
and beyond. Thus, this would create an explicit need to raise the standard required by the project toC++17
. This opens up a number of other modernization opportunities, but we should be careful that raising the standard does not produce any heavy breaking changes (afaik, they shouldn't, at worst just a lot of warnings).Timer
class uses stuff fromwindows.h
for some reason, but the workaround temporarily, especially if we want to keep usingTimer
, is to get rid of anyusing namespace std;
calls around the project; this workaround allows us to bypass this issue in the Windows SDK. this change also does not introduce any breaking changes into Graphitti on the Linux version.log4cplus.lib
file is not being found on the Windows build, presumably because theCMakeLists.txt
file may not be building the Windows version automatically (it should be the case that the 3p module automagically builds for the right platform). Building this current version seems to have no issues in compiling on Linux. So either some time needs to be spent in looking at the right places forlog4cplus
to be built from source properly per platform (which I currently can't tell if its the issue of the 3p module itself or us as the users), or using a package manager (likevcpkg
) to take care of that stuff for us.