Help. Porting "FreeOCL" fails (atomic_ops.h missing, CLANG++ libc++ issues ...)

"O. Hartmann" <[email protected]>
Newsgroups gmane.os.freebsd.devel.ports,gmane.os.freebsd.performance
Message-ID <[email protected]>
Hello.

FreeBSD has fallen back far behind the standards of modern scientific
computing and I dsperately look for solutions having OpenCL support on
FreeBSD anyway.

I stumbled into this project recently:

FreeOCL at
http://code.google.com/p/freeocl/

or the sources located at

http://code.google.com/p/freeocl/downloads/detail?name=FreeOCL-0.3.6-src.tar.gz&can=2&q=

For your convenience, please find my naive attempt of a port attached to
this email.

Well, I tried LLVM/CLANG, but Cmake of the sources fairly fails many
checks especuially for OpenMP. Using clang++ requisites the usage of the
new libc++ (CXXFLAGS+= -stdlib=libc++). But this fails with this error:


[...]
[ 17%] Building CXX object src/CMakeFiles/FreeOCL.dir/codebuilder.cpp.o
In file included from
/usr/ports/devel/freeocl/work/FreeOCL-0.3.6-Source/src/codebuilder.cpp:26:
/usr/ports/devel/freeocl/work/FreeOCL-0.3.6-Source/src/parser/parser.h:118:15:
error: no viable conversion from 'std::__1::basic_istream<char>' to
'const bool'
                        const bool ok = in.get(c);
                                   ^    ~~~~~~~~~
/usr/ports/devel/freeocl/work/FreeOCL-0.3.6-Source/src/codebuilder.cpp:444:13:
warning: 70 enumeration values not handled in switch: 'VOID', 'BOOL',
'HALF'... [-Wswitch]
                                        switch(native->get_type_id())
                                               ^
1 warning and 1 error generated.
*** [src/CMakeFiles/FreeOCL.dir/codebuilder.cpp.o] Error code 1
[..]


I tried also setting USE_GCC= 4.7+ using gcc-4.7 I installed, but that
fails with

[...]
-- Build files have been written to:
/usr/ports/devel/freeocl/work/FreeOCL-0.3.6-Source
===>  Building for freeocl-0.3.6
Scanning dependencies of target FreeOCL
[  1%] Building CXX object src/CMakeFiles/FreeOCL.dir/freeocl.cpp.o
In file included from
/usr/ports/devel/freeocl/work/FreeOCL-0.3.6-Source/src/freeocl.cpp:18:0:
/usr/ports/devel/freeocl/work/FreeOCL-0.3.6-Source/src/freeocl.h:71:2:
error: 'u_int64_t' does not name a type
*** [src/CMakeFiles/FreeOCL.dir/freeocl.cpp.o] Error code 1
[...]

I think patches are required.

More disturbing is the use of gcc-4.6 via

USE_GCC= 4.6+

The error is then a compalin about a missing include file

atomic_ops.h

which is located in the abandoned KSE facility of the kernel, so the
includes seem not to be installed anymore - but since I'm not involved
in the development, I can only guess and ask the people here.

Maybe some experienced freeBSD developers with the same need for OpenCl
is willing to pick up this and help a bit.

Well, as far as I see, the FreeOCL project of Roland Borchard is a
OpenCL library for CPU usage. As far as I can understand, if we on
FreeBSd could have a library "libOpenCL" as this is usually installed by
the nVidia BLOB drivers on Linux for the use of OpenCL/GPGPU support
with their GPUs, this would fill a still painfull open gap in FreeBSD as
a scientific development platform.

There is still no suitable compiler for OpenCL out here for freeBSD, but
I have still the hope that LLVM can provide such a thing in the near future.

I cross post this posting also to "performance" in the hope finding some
people attracted and "lurd" into this subject.

Regards,

O. Hartmann
Makefile (text/plain, 567 B)
PORTNAME=               freeocl
PORTVERSION=            0.3.6
CATEGORIES=             devel

MAINTAINER=             [email protected]
COMMENT=                FreeOCL - a free OpenCL implementation for CPU

#MASTER_SITES=          http://freeocl.googlecode.com/files/FreeOCL-0.3.6-src.tar.gz
MASTER_SITES=           http://freeocl.googlecode.com/files/
DISTNAME=               FreeOCL-${PORTVERSION}-src

WRKSRC=			${WRKDIR}/FreeOCL-${PORTVERSION}-Source

USE_CMAKE=		YES
CMAKE_BUILD_TYPE=	Release

USE_GCC=		4.7+

#CXXFLAGS+=		-stdlib=libc++

.include <bsd.port.mk>
signature.asc (application/pgp-signature, 488 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iQEcBAEBAgAGBQJQR2WjAAoJEOgBcD7A/5N8Ih4H/2yb0SMUgrJSiSls0jGuFaD3
P/B28GTeIvnaHHSZyvamY7itARkMx48WAfXRf1Nw5hVT+DLDCmt8T2lDnVmpysrJ
GSFSCPNy1/zQ1zmaS6DnLNRV5HPWCSu/YsPbWbDTq3pKPKBRm6zxfifE6XojXiwk
a4d4RwvFJ3K9a6riN3ND3N0nK3+fNyRzhVTlYPeVu1yLTNzrYd1OypisuhK5oabl
TochS9hr7sKvoAvrlcrR0AUhmhD06CC+DT5MthAFWCumlkCCRq71ZOLp0YBdYToF
LRFiHW/0SPYUdJ4UBfRkHUrSqnYB8V/bIrRIl5YhxgR/fmPN9dI66HtK9umJKx4=
=m4Px
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.