Skip to content

Instantly share code, notes, and snippets.

@sgr
Last active October 4, 2019 12:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sgr/ebd97b2acde3b68b29cf8399883f94d8 to your computer and use it in GitHub Desktop.
Save sgr/ebd97b2acde3b68b29cf8399883f94d8 to your computer and use it in GitHub Desktop.
Testing alloc-memory-block

Test script

#!/bin/sh
#|-*- mode:lisp -*-|#
#|
exec ros -Q -- $0 "$@"
|#
(progn ;;init forms
  (ros:ensure-asdf)
  #+quicklisp(ql:quickload '(cl-cuda prove) :silent t)
  )

(defpackage :ros.script.memory.3779162681
  (:use :cl :prove
        :cl-cuda.api.memory
        :cl-cuda.api.context
        :cl-cuda.lang
	:cl-cuda.lang.type))
(in-package :ros.script.memory.3779162681)

(plan nil)

(defun main (&rest argv)
  (declare (ignorable argv))
	(with-cuda (0)
	  (is-error (alloc-memory-block 'int -1)
				type-error
				"SIZE which is negative"))
	(with-cuda (0)
		(format t "cffi-type-size 'int ~A~%" (cffi-type-size 'int))
		(alloc-memory-block 'int -1)
		)
	)
;;; vim: set ft=lisp lisp:

Result on Windows:

Invoking CU-INIT succeded.
Invoking CU-DEVICE-GET succeded.
Invoking CU-CTX-CREATE succeded.
Invoking CU-DEVICE-COMPUTE-CAPABILITY succeded.
  �[31m× SIZE which is negative
    (ALLOC-MEMORY-BLOCK 'INT -1) is expected to raise a condition TYPE-ERROR (got #<SIMPLE-ERROR "~A failed with driver API error No. ~A.~%~A" {1004B199F3}>)
�[0mInvoking CU-CTX-DESTROY succeded.
Invoking CU-INIT succeded.
Invoking CU-DEVICE-GET succeded.
Invoking CU-CTX-CREATE succeded.
Invoking CU-DEVICE-COMPUTE-CAPABILITY succeded.
Unhandled SIMPLE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                    {10012E0613}>:
  CU-MEM-ALLOC failed with driver API error No. 2.
CUDA_ERROR_OUT_OF_MEMORY

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {10012E0613}>
0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SIMPLE-ERROR "~A failed with driver API error No. ~A.~%~A" {1004E81743}> #<unused argument> :QUIT T)
1: (SB-DEBUG::RUN-HOOK SB-EXT:*INVOKE-DEBUGGER-HOOK* #<SIMPLE-ERROR "~A failed with driver API error No. ~A.~%~A" {1004E81743}>)
2: (INVOKE-DEBUGGER #<SIMPLE-ERROR "~A failed with driver API error No. ~A.~%~A" {1004E81743}>)
3: (ERROR "~A failed with driver API error No. ~A.~%~A" CL-CUDA.DRIVER-API:CU-MEM-ALLOC 2 "CUDA_ERROR_OUT_OF_MEMORY")
4: (CL-CUDA.DRIVER-API::CHECK-CUDA-ERROR CL-CUDA.DRIVER-API:CU-MEM-ALLOC 2)
5: (ALLOC-DEVICE-MEMORY INT -1)
6: (ALLOC-MEMORY-BLOCK INT -1)
7: (MAIN)
8: (SB-INT:SIMPLE-EVAL-IN-LEXENV (APPLY (QUOTE MAIN) ROSWELL:*ARGV*) #<NULL-LEXENV>)
9: (SB-INT:SIMPLE-EVAL-IN-LEXENV (ROSWELL:QUIT (APPLY (QUOTE MAIN) ROSWELL:*ARGV*)) #<NULL-LEXENV>)
10: (SB-EXT:EVAL-TLF (ROSWELL:QUIT (APPLY (QUOTE MAIN) ROSWELL:*ARGV*)) NIL NIL)
11: ((LABELS SB-FASL::EVAL-FORM :IN SB-INT:LOAD-AS-SOURCE) (ROSWELL:QUIT (APPLY (QUOTE MAIN) ROSWELL:*ARGV*)) NIL)
12: (SB-INT:LOAD-AS-SOURCE #<CONCATENATED-STREAM :STREAMS NIL {1003F08843}> :VERBOSE NIL :PRINT NIL :CONTEXT "loading")
13: ((FLET SB-FASL::THUNK :IN LOAD))
14: (SB-FASL::CALL-WITH-LOAD-BINDINGS #<CLOSURE (FLET SB-FASL::THUNK :IN LOAD) {9AF14B}> #<CONCATENATED-STREAM :STREAMS NIL {1003F08843}>)
15: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) #<CONCATENATED-STREAM :STREAMS NIL {1003F08843}> NIL)
16: (LOAD #<CONCATENATED-STREAM :STREAMS NIL {1003F08843}> :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT)
17: ((FLET ROSWELL::BODY :IN ROSWELL:SCRIPT) #<SB-SYS:FD-STREAM for "file C:\\Users\\sgrf\\src\\cuda\\memory.ros" {1003F05F33}>)
18: (ROSWELL:SCRIPT "memory.ros")
19: (ROSWELL:RUN ((:EVAL "(ros:quicklisp)") (:SCRIPT "memory.ros") (:QUIT NIL)))
20: (SB-INT:SIMPLE-EVAL-IN-LEXENV (ROSWELL:RUN (QUOTE ((:EVAL "(ros:quicklisp)") (:SCRIPT "memory.ros") (:QUIT NIL)))) #<NULL-LEXENV>)
21: (EVAL (ROSWELL:RUN (QUOTE ((:EVAL "(ros:quicklisp)") (:SCRIPT "memory.ros") (:QUIT NIL)))))
22: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:EVAL . "(progn #-ros.init(cl:load \"c:\\\\\\\\tools\\\\\\\\roswell\\\\\\\\lisp\\\\\\\\init.lisp\"))") (:EVAL . "(ros:run '((:eval\"(ros:quicklisp)\")(:script \"memory.ros\")(:quit ())))")))
23: (SB-IMPL::TOPLEVEL-INIT)
24: ((FLET SB-UNIX::BODY :IN SB-EXT:SAVE-LISP-AND-DIE))
25: ((FLET "WITHOUT-INTERRUPTS-BODY-7" :IN SB-EXT:SAVE-LISP-AND-DIE))
26: ((LABELS SB-IMPL::RESTART-LISP :IN SB-EXT:SAVE-LISP-AND-DIE))
27: ("foreign function: #x43101B")
28: ("foreign function: #x403618")

unhandled condition in --disable-debugger mode, quitting
Invoking CU-CTX-DESTROY succeded.

Result on Ubuntu

Invoking CU-INIT succeded.
Invoking CU-DEVICE-GET succeded.
Invoking CU-CTX-CREATE succeded.
Invoking CU-DEVICE-COMPUTE-CAPABILITY succeded.
  ✓ SIZE which is negative 
Invoking CU-CTX-DESTROY succeded.
Invoking CU-INIT succeded.
Invoking CU-DEVICE-GET succeded.
Invoking CU-CTX-CREATE succeded.
Invoking CU-DEVICE-COMPUTE-CAPABILITY succeded.
Unhandled TYPE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                  {10004F04C3}>:
  The value
    -4
  is not of type
    (UNSIGNED-BYTE 64)
  when binding SB-ALIEN::VALUE

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {10004F04C3}>
0: (CL-CUDA.DRIVER-API::%CU-MEM-ALLOC #.(SB-SYS:INT-SAP #X7F562A5BFFF0) -4)
1: (CL-CUDA.DRIVER-API:CU-MEM-ALLOC #.(SB-SYS:INT-SAP #X7F562A5BFFF0) -4)
2: (ALLOC-DEVICE-MEMORY INT -1)
3: (ALLOC-MEMORY-BLOCK INT -1)
4: (MAIN)
5: (SB-INT:SIMPLE-EVAL-IN-LEXENV (APPLY (QUOTE MAIN) ROSWELL:*ARGV*) #<NULL-LEXENV>)
6: (SB-INT:SIMPLE-EVAL-IN-LEXENV (ROSWELL:QUIT (APPLY (QUOTE MAIN) ROSWELL:*ARGV*)) #<NULL-LEXENV>)
7: (SB-EXT:EVAL-TLF (ROSWELL:QUIT (APPLY (QUOTE MAIN) ROSWELL:*ARGV*)) NIL NIL)
8: ((LABELS SB-FASL::EVAL-FORM :IN SB-INT:LOAD-AS-SOURCE) (ROSWELL:QUIT (APPLY (QUOTE MAIN) ROSWELL:*ARGV*)) NIL)
9: (SB-INT:LOAD-AS-SOURCE #<CONCATENATED-STREAM :STREAMS NIL {10029A8243}> :VERBOSE NIL :PRINT NIL :CONTEXT "loading")
10: ((FLET SB-FASL::THUNK :IN LOAD))
11: (SB-FASL::CALL-WITH-LOAD-BINDINGS #<CLOSURE (FLET SB-FASL::THUNK :IN LOAD) {7F562A3BF4FB}> #<CONCATENATED-STREAM :STREAMS NIL {10029A8243}>)
12: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) #<CONCATENATED-STREAM :STREAMS NIL {10029A8243}> NIL)
13: (LOAD #<CONCATENATED-STREAM :STREAMS NIL {10029A8243}> :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT)
14: ((FLET ROSWELL::BODY :IN ROSWELL:SCRIPT) #<SB-SYS:FD-STREAM for "file /home/sgr/src/mem.ros" {10029A3EA3}>)
15: (ROSWELL:SCRIPT "mem.ros")
16: (ROSWELL:RUN ((:EVAL "(ros:quicklisp)") (:SCRIPT "mem.ros") (:QUIT NIL)))
17: (SB-INT:SIMPLE-EVAL-IN-LEXENV (ROSWELL:RUN (QUOTE ((:EVAL "(ros:quicklisp)") (:SCRIPT "mem.ros") (:QUIT NIL)))) #<NULL-LEXENV>)
18: (EVAL (ROSWELL:RUN (QUOTE ((:EVAL "(ros:quicklisp)") (:SCRIPT "mem.ros") (:QUIT NIL)))))
19: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:EVAL . "(progn #-ros.init(cl:load \"/home/linuxbrew/.linuxbrew/Cellar/roswell/19.08.10.101/etc/roswell/init.lisp\"))") (:EVAL . "(ros:run '((:eval\"(ros:quicklisp)\")(:script \"mem.ros\")(:quit ())))")))
20: (SB-IMPL::TOPLEVEL-INIT)
21: ((FLET SB-UNIX::BODY :IN SB-EXT:SAVE-LISP-AND-DIE))
22: ((FLET "WITHOUT-INTERRUPTS-BODY-14" :IN SB-EXT:SAVE-LISP-AND-DIE))
23: ((LABELS SB-IMPL::RESTART-LISP :IN SB-EXT:SAVE-LISP-AND-DIE))

unhandled condition in --disable-debugger mode, quitting
Invoking CU-CTX-DESTROY succeded.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment